package com.xxgc.quartzstudy.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;


/**
 * 土味情话随机生成器
 * 支持多种情话分类，可随机生成或按分类获取
 */
public class LoveQuoteGenerator {

    // 情话分类常量
    public static final String CATEGORY_FLIRTY = "flirty";        // 撩人情话
    public static final String CATEGORY_DEEP = "deep";          // 深情告白
    public static final String CATEGORY_FUNNY = "funny";        // 幽默风趣
    public static final String CATEGORY_ROMANTIC = "romantic";  // 浪漫诗意
    public static final String CATEGORY_ALL = "all";            // 全部类别

    // 存储不同分类的情话库
    private static final Map<String, List<String>> quoteLibrary = new HashMap<>();
    private static final Random random = new Random();

    // 静态初始化情话库
    static {
        // 撩人情话
        quoteLibrary.put(CATEGORY_FLIRTY, Arrays.asList(
                "你近视吗？不近视啊。那你怎么看不出我喜欢你？",
                "你知道我的缺点是什么吗？是缺点你。",
                "莫文蔚的阴天，孙燕姿的雨天，周杰伦的晴天，都不如你和我聊天。"
        ));

        // 深情告白
        quoteLibrary.put(CATEGORY_DEEP, Arrays.asList(
                "我喜欢你，像风走了八千里，不问归期。",
                "你走向我，我觉得一日不见如隔三秋；你朝我笑，我又觉得三秋未见不过一日。",
                "世界没你想象的那么好，世界也没你想象的那么坏。你过来，来我身边。月亮不抱你，时光摧毁你，可我爱你。"
        ));

        // 幽默风趣
        quoteLibrary.put(CATEGORY_FUNNY, Arrays.asList(
                "最近体重偷偷上升，绝对没有偷吃哦，只是偷偷把你放在了心上。",
                "你知道我为什么感冒了吗？因为我对你完全没有抵抗力。",
                "你累不累啊？不累。可是你都在我心里跑了一天了。"
        ));

        // 浪漫诗意
        quoteLibrary.put(CATEGORY_ROMANTIC, Arrays.asList(
                "我想和你一起生活，在某个小镇，共享无尽的黄昏，和绵绵不绝的钟声。",
                "你微微地笑着，不同我说什么话。而我觉得，为了这个，我已等待得很久了。",
                "草在结它的种子，风在摇它的叶子。我们站着，不说话，就十分美好。"
        ));

        // 创建全部类别的合集
        List<String> allQuotes = new ArrayList<>();
        quoteLibrary.values().forEach(allQuotes::addAll);
        quoteLibrary.put(CATEGORY_ALL, Collections.unmodifiableList(allQuotes));
    }

    /**
     * 随机获取一句情话
     * @return 随机情话
     */
    public static String getRandomQuote() {
        return getRandomQuoteFromCategory(CATEGORY_ALL);
    }

    /**
     * 从指定分类中随机获取一句情话
     * @param category 情话分类，使用类中定义的 CATEGORY_* 常量
     * @return 随机情话，如果分类不存在返回空字符串
     */
    public static String getRandomQuoteFromCategory(String category) {
        List<String> quotes = quoteLibrary.getOrDefault(category, Collections.emptyList());
        if (quotes.isEmpty()) {
            return "";
        }
        return quotes.get(random.nextInt(quotes.size()));
    }

    /**
     * 获取指定分类的所有情话
     * @param category 情话分类
     * @return 该分类下的所有情话列表
     */
    public static List<String> getAllQuotesFromCategory(String category) {
        return quoteLibrary.getOrDefault(category, Collections.emptyList());
    }

    /**
     * 获取所有分类的名称
     * @return 分类名称列表
     */
    public static List<String> getAllCategories() {
        return new ArrayList<>(quoteLibrary.keySet());
    }

    // 示例用法
    public static void main(String[] args) {
        // 随机获取一句情话
        System.out.println("随机情话: " + getRandomQuote());

        // 从指定分类获取情话
        System.out.println("幽默情话: " + getRandomQuoteFromCategory(CATEGORY_FUNNY));

        // 获取所有分类
        System.out.println("所有分类: " + getAllCategories());
    }
}
